import { ref } from 'vue'

// 全局 toast 状态
const toastState = ref({
  show: false,
  message: '',
  type: 'info',
  timeout: 2000
})

/**
 * Toast 通知系统
 */
const toast = {
  /**
   * 显示成功消息
   * @param {string} message - 消息内容
   * @param {number} timeout - 显示时长
   */
  success(message, timeout = 2000) {
    this.show(message, 'success', timeout)
  },
  
  /**
   * 显示错误消息
   * @param {string} message - 消息内容
   * @param {number} timeout - 显示时长
   */
  error(message, timeout = 2000) {
    this.show(message, 'error', timeout)
  },
  
  /**
   * 显示警告消息
   * @param {string} message - 消息内容
   * @param {number} timeout - 显示时长
   */
  warning(message, timeout = 2000) {
    this.show(message, 'warning', timeout)
  },
  
  /**
   * 显示信息消息
   * @param {string} message - 消息内容
   * @param {number} timeout - 显示时长
   */
  info(message, timeout = 2000) {
    this.show(message, 'info', timeout)
  },
  
  /**
   * 显示 toast 消息
   * @param {string} message - 消息内容
   * @param {string} type - 消息类型
   * @param {number} timeout - 显示时长
   */
  show(message, type = 'info', timeout = 2000) {
    toastState.value = {
      show: true,
      message,
      type,
      timeout
    }
  }
}

export default defineNuxtPlugin(() => {
  return {
    provide: {
      toast,
      toastState
    }
  }
})